事务ACID 特性

show ENGINES;

-- 开始一个事务
START TRANSACTION;-- or BEGIN;

[mysql 语句]
SAVEPOINT _name
[mysql 语句]

-- 提交修改
COMMIT;

-- 回滚到事务最开始状态，同时关闭事务
ROLLBACK;
-- 回滚到保存点
ROLLBACK to SAVEPOINT_name;
设置保存点

-- 事务是否自动提交
autocommit 

show variables like 'autocommit';

-- 设置
SET autocommit=1;-- on 自动提交
set autocommit=0;-- off 手动提交

show tables;
select * from student;
update student set name='zzz' where sn='001';

rollback;

-- 事务是保证数据安全， 索引是提高查询速率

-- 隔离级别

-- 1.read uncommitted 读未提交
-- 2.read committed   读已提交
-- 3.repeatable read  可重复读
--  4.SERIALIZABLE    串行化
-- 串行操作 -- 一个接一个

-- 1.脏读 ： 事务A访问了事务B还没有提交（commit）的数据(可能修改了未提交的数据)
-- 2.不可重复读：
--  读的行第一次和第二次不一样 被另一个事务修改
-- 3.幻读
-- 读的行被锁，查看的第一次和第二次的结果集不同

innodb 使用了next-key 锁解决了部分幻读问题
临近的行和间隙

-- @@ 查看系统变量

-- 全局
select @@global.transaction_isolation;
session 局部

set global transaction isolation level read uncommitted;
set global transaction isolation level read committed;
set global transaction isolation level 
repeatable read;
use mysql;
select * from user;

CREATE user ' '@' ' identified by ' ';
alter user ' '@' ' identified by ' ';